package main

import "fmt"

// 高级函数 回调函数   将函数最为一个函数的参数 进行传递
func main() {

	//当遇到一个业务  想用同一个方法执行产生不同的结果的时候 就可以使用回调函数（此函数作为一个函数的参数）
	r2 := oper(2, 4, add)
	fmt.Println(r2)
	fmt.Println(oper(6, 2, delete))

	//将一个匿名函数作为一个函数的参数（这个匿名函数是回调函数）
	r3 := oper(8, 4, func(a int, b int) int {
		if b == 0 {
			fmt.Println("除数不能为0")
			return 0
		}
		return a / b
	})
	fmt.Println(r3)
}
func oper(a, b int, f func(int, int) int) int {
	r := f(a, b)
	return r
}

func add(a, b int) int {
	return a + b
}

func delete(a, b int) int {
	return a - b
}
